<!DOCTYPE html>
<html lang="zh-cn">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <link rel="stylesheet" href="../../assets/font/iconfont.css">
    <link rel="stylesheet" href="../../assets/css/base.css">
    <style>
        .card{
            width: 150px;
            height: 150px;
            box-shadow: 0 0 10px #999;
            border-radius: 6px;
            padding: 10px;
            margin: 14px;
            display: inline-block;
            vertical-align: text-top;
        }
        .card .title{
            padding-bottom: 10px;
            text-align: center;
            font-weight: bold;
            border-bottom: 1px solid #dedede;
        }
        .card .content{
            padding: 10px;
        }
    </style>
</head>
<body>
    <div id="app">
        <pre v-pre class="note"> 
        2.具名分发：在基础分发的功能下，完成选择插槽渲染操作
                   vue内置分发组件插槽 slot ，在加载渲染标签时使用的是 document.cloneNode 方法，完成标签克隆;
                   vue内置分发组件插槽 slot ，在同一个组件内部多次定义，如果没有区分插槽名称，渲染标签会被多次克隆使用;
                   vue内置分发组件插槽 slot 可以通过增加 name 属性方式定义插槽名称，构成具名分发的必要条件;
                   组件使用时通过 v-slot 指令的 : 参数取值插槽名称，描述标签的分发区域，该指令只能被定义在组件标签或者template标签上;
           
            + 基础分发也被叫做 "默认分发" ，没有定义 name 的 slot 插槽，name默认取值为 default，所以基础分发可以使用具有分发语法;
                   组件调用时未通过 v-slot 指令描述的标签，或者使用 v-slot:default 描述的标签都会作为基础分发【默认分发】的渲染容器
        
        </pre>
        <my-card>
            <!-- <span style="color:red">标题</span> -->
            <!-- <span style="color:red" v-slot:title>标题</span> -->
            <template v-slot:title>
                <span style="color:red" >标题</span>
            </template>

            <!-- <p style="color:blue;">内容</p> -->

            <!-- v-slot 指令的缩写为 # -->
            <template #default>
                <p style="color:blue;">内容</p>
            </template>
        </my-card>
        <my-card>
            <p style="color:blue;">内容</p>
        </my-card>
        <my-card>
            <template v-slot:title>
                <span style="color:red" >标题</span>
            </template>
        </my-card>
    </div>

    <script type="text/x-template" id="card">
        <div class="card">
            <div class="title">
                <!-- <slot></slot> -->
                <slot name="title"></slot>
            </div>
            <div class="content">
                <slot></slot>
                <!-- <slot name="default"></slot> -->
            </div>
        </div>
    </script>
    <script type="module">
        import { createApp } from "../../assets/vue3/vue.esm-browser.js";
        const MyCard = {
            template:"#card"
        }
        createApp({
            components: {
                MyCard
            },
            data(){
                return {
                   
                }
            }
        }).mount("#app");
    </script>
</body>
</html>